/**
 * @name: HyButtonInterface
 * @data: 2024/7/4 15:47
 * 按钮
 * 按钮目前先定义5中类型
 * insert delete update
 */
export interface HyButtonPublicInterface{
  operationType: "insert" | "delete" | "update" | "select" | "custom",
  /** 按钮显示的文本 */
  label?:string,
  /** 按钮显示类型,和element中的type相同 */
  type?:'primary'| 'success'| 'warning'| 'danger'| 'info'| 'text',
  /** 是否为朴素按钮 */
  plain?: boolean,
  size?: 'large'| 'default'| 'small',
  /** 是否为圆角按钮 */
  round?: boolean,
  /** 是否为圆形按钮 */
  circle?: boolean,
  /** 是否为文本按钮 */
  text?:boolean
  /**
   * 单击的回调
   * 注意,isUpdateTableData(是否更新表格数据)为true时
   * clickCallback要为异步方法,否则报错
   */
  clickCallback?: (rows:any)=>Promise<void> | void,
  /**
   * 是否更新表格数据，默认为false（表示更新）
   * 如果开启更新表格,此时clickCallback就需要为异步函数
   */
  isUpdateTableData?:boolean
  /** 按钮是否可用(true表示不可用，false表示可用)(这里我们再加一个异步函数的类型，防止后期需求扩展) */
  disableCallback?: (rows:any)=>Promise<void> | boolean,
  /** 按钮是否显示，同样是也回调 (这里我们再加一个异步函数的类型，防止后期需求扩展)*/
  showCallback?: (rows:any)=>Promise<void> | boolean,

}

/** 新增按钮的类型 */
export interface HyInsertButtonInterface extends HyButtonPublicInterface{
  operationType:"insert",

}

/** 删除按钮的类型 */
export interface HyDeleteButtonInterface extends HyButtonPublicInterface{
  operationType:"delete",

}

/** 更新按钮的类型 */
export interface HyUpdateButtonInterface extends HyButtonPublicInterface{
  operationType:"update",

}

/** 查看按钮的类型 */
export interface HySelectButtonInterface extends HyButtonPublicInterface{
  operationType:"select",

}

/** 自定义按钮的类型 */
export interface HyCustomButtonInterface extends HyButtonPublicInterface{
  operationType:"custom",

}
